/**
 * Created on [2019/1/1 下午12:41] by lidi
 * <p>
 * 项目名称: gaia-commons
 * <p>
 * 本程序版权属于福建慧政通信息科技有限公司所有。
 * <p>
 * 任何组织和个人未经福建慧政通信息科技有限公司许可与授权,不得擅自传播、复制、更改该程序的内容。
 * 本程序受版权法和国际条约的保护。如未经授权而擅自复制或传播本程序(或其中任何部分),
 * 将受到严厉的刑事及民事制裁，并将在法律许可的范围内受到最大可能的起诉!
 * <p>
 * ©2019 福建慧政通信息科技有限公司
 */

package com.lry.util.captcha2;

import java.awt.Font;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;

/**
 * 定义了图像验证码的常见操作。
 *
 * @author 李迪
 */
public interface ImageCaptcha extends Captcha {

    /**
     * 生成验证码图像。
     *
     * @param code 验证码内容。
     * @return 验证码图像。
     */
    BufferedImage generate(String code);

    /**
     * 获取验证码图像所用的字体。
     *
     * @return 验证码图像所用的字体。
     */
    Font getFont();

    /**
     * 获取验证码图像宽度。
     *
     * @return 验证码图像宽度（px）。
     */
    int getWidth();

    /**
     * 获取验证码图像高度。
     *
     * @return 验证码图像高度（px）。
     */
    int getHeight();

    /**
     * 将图像验证码输出到指定的输出流。
     *
     * @param code         验证码内容。
     * @param imgFormat    图像格式。
     * @param outputStream 验证码输出流。
     * @throws IOException IO异常。
     */
    void write(String code, String imgFormat, OutputStream outputStream) throws IOException;
}
